import { IsString, IsNumber, IsOptional, Min, IsArray, ArrayMinSize, ArrayMaxSize, MaxLength, IsBoolean } from 'class-validator';
import PaginationDto from '../../dtos/pagination.dto';

export default class Dto {
    @MaxLength(30)
    @IsString({})
    @IsOptional()
    name:string;

    @Min(0)
    @IsNumber({})
    @IsOptional()
    owner:number;

    // @Min(0)
    // @IsNumber({})
    // @IsOptional()
    // simId:number;

    
    @IsBoolean({})
    @IsOptional()
    registerAli:boolean;


    // @IsNumber({})
    // @IsOptional()
    // longitude:string;


    // @IsNumber({})
    // @IsOptional()
    // latitude:string;

    // @MaxLength(100)
    // @IsString({})
    // @IsOptional()
    // address:string;

    @IsNumber({})
    @IsOptional()
    paramsRule:number;

    @IsNumber({})
    @IsOptional()
    pricing:number;

    

    @MaxLength(100)
    @IsString({})
    @IsOptional()
    remark:string;
}

export class AddDto extends Dto {
    @Min(0)
    @IsNumber({})
    chargeType:number;

    @IsString({})
    aliProduct:string;

    @IsNumber({})
    portCount:number;
}

export class AddBatchDto extends Dto {
    @Min(0)
    @IsNumber({})
    chargeType:number;
    


    @IsString({})
    aliProduct:string;

    @IsNumber({})
    portCount:number;



    @Min(0)
    @IsNumber({})
    @IsOptional()
    owner:number;


    @ArrayMaxSize(10000)
    @ArrayMinSize(1)
    @IsArray()
    rows:Array<{
        simCard:string;
        name:string;
    }>;


}


export class UpdateDto extends Dto {
    @IsNumber({})
    @IsOptional()
    portCount:number;


    @Min(0)
    @IsNumber({})
    @IsOptional()
    chargeType:number;
}

export class PageDto extends PaginationDto {
    @Min(0)
    @IsNumber()
    @IsOptional()
    id:number;

    @Min(0)
    @IsNumber({})
    @IsOptional()
    stationId:number;

    @MaxLength(30)
    @IsString({})
    @IsOptional()
    name:string;


    @Min(0)
    @IsNumber({})
    @IsOptional()
    connectStatus:number;


    @Min(0)
    @IsNumber({})
    @IsOptional()
    owner:number;


    @IsArray()
    @IsOptional()
    type:number[];
}
